package com.starhub.common.bean.agent;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * AI函数实体类
 * 用于存储和管理LangChain4j Tool功能的配置
 */
@Data
@TableName("ai_function")
public class AiFunction {

    /**
     * 主键ID
     */
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;

    /**
     * 函数名称
     */
    @TableField("name")
    private String name;

    /**
     * 函数描述
     */
    @TableField("description")
    private String description;

    /**
     * 函数类型
     */
    @TableField("type")
    private String type;

    /**
     * 函数参数JSON配置
     */
    @TableField("parameters")
    private String parameters;

    /**
     * 函数执行前是否需要确认，0-否，1-是
     */
    @TableField("need_confirm")
    private Boolean needConfirm;

    /**
     * 是否触发前端动作，0-否，1-是
     */
    @TableField("trigger_frontend")
    private Boolean triggerFrontend;

    /**
     * 前端动作类型
     */
    @TableField("frontend_action")
    private String frontendAction;

    /**
     * 函数执行后是否将结果再次给到大模型，0-否，1-是
     */
    @TableField("regenerate_result")
    private Boolean regenerateResult;

    /**
     * 函数实现类
     */
    @TableField("implementation_class")
    private String implementationClass;

    /**
     * 函数实现方法
     */
    @TableField("implementation_method")
    private String implementationMethod;

    /**
     * 状态，0-禁用，1-启用
     */
    @TableField("status")
    private Integer status;

    /**
     * 创建人ID
     */
    @TableField("creator_id")
    private String creatorId;

    /**
     * 创建人姓名
     */
    @TableField("creator_name")
    private String creatorName;

    /**
     * 更新人ID
     */
    @TableField("updater_id")
    private String updaterId;

    /**
     * 更新人姓名
     */
    @TableField("updater_name")
    private String updaterName;

    /**
     * 创建时间
     */
    @TableField("create_time")
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @TableField("update_time")
    private LocalDateTime updateTime;
}